package com.ysx.service.impl;

import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.itheima.entity.PageResult;
import com.itheima.entity.QueryPageBean;
import com.itheima.health.pojo.CheckItem;
import com.sun.tools.javac.comp.Check;
import com.ysx.dao.CheckItemDao;
import com.ysx.service.CheckItemsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Transactional
@Component//注册到容器中
public class CheckItemsServiceImpl implements CheckItemsService {
    //注入CheckItemDao对象
    @Autowired
    private CheckItemDao checkItemDao;

    @Override
    public int add(CheckItem checkItem) {
        return checkItemDao.add(checkItem);
    }

    /**
     * 分页查询数据 需要用到分页插件
     * @param queryPageBean
     * @return
     */
    @Override
    public PageResult<CheckItem> findPage(QueryPageBean queryPageBean) {
//        设置分页查询条件
        PageHelper.startPage(queryPageBean.getCurrentPage(),queryPageBean.getPageSize());
//        调用dao层 查询数据库
       Page<CheckItem> itemPages = checkItemDao.findAll(queryPageBean);
//       获得总记录数
        long total = itemPages.getTotal();
//        获得截取的分页数据
        List<CheckItem> result = itemPages.getResult();
        System.out.println("Page:"+itemPages);
        System.out.println("List:"+result);
//        封装PageResult对象
        return new PageResult<>(total, result);
    }

    /**
     * 删除检查项
     * @param id
     * @return
     */
    @Override
    public int delete(Integer id) {
//        根据提供的参数判断t_checkgroup_checkitem表中是否存在关联的ID值
        System.out.println("来到了service层");
        int check=checkItemDao.findItemById(id);
        System.out.println("执行完了项目关联");
        if(check>0){
            //如果有 那么就不能删除 返回0 如果没有 就接着执行删除操作
            System.out.println("很抱歉，当前检查项目存在项目关联 不允许删除");
            return 0;
        }
        return checkItemDao.delete(id);
    }

    /**
     * 更新检查项目
     * @param checkItem
     * @return
     */
    @Override
    public int update(CheckItem checkItem) {
//        调用dao层 返回受影响的结果
        return  checkItemDao.update(checkItem);
    }

    /**
     * 查询所有的检查项
     * @return
     */
    @Override
    public List<CheckItem> findAll() {
       List<CheckItem> items= checkItemDao.findAlls();
        return items;
    }
}
